package com.reworking.reworking_api.controller;


import com.emallos.xiama.dto.DonationRecordDto;
import com.emallos.xiama.model.DonationRecordModel;
import com.emallos.xiama.service.DonationRecordService;
import com.emallos.xiama.support.controller.RestSupportController;

import com.emallos.xiama.support.repository.PageResult;
import com.emallos.xiama.support.vo.RetModel;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.validation.Valid;
import java.util.concurrent.ExecutionException;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.math.BigDecimal;

/**
 * @author cnlinjie@foxmail.com
 *  ,控制类
 */
@Validated
@RestController
@RequestMapping("/donation-record")
public class DonationRecordController extends RestSupportController {

private final static Logger logger = LoggerFactory.getLogger(DonationRecordController.class);


@Autowired
private DonationRecordService service;

    // 增加
    @RequestMapping(value = "", method = RequestMethod.POST)
    public RetModel save (
    @Valid @RequestBody
        DonationRecordDto dto) {
        Long id = service.save(dto);
        return RetModel.get().put("id",id);
     }

    // 更新
    @RequestMapping(value = "/{id}", method = RequestMethod.POST)
    public RetModel update(
    @PathVariable("id")  Long id,
    @Valid @RequestBody
        DonationRecordDto dto
    ) {
        dto.setId(id);
        service.update(dto);
        return RetModel.get();
    }

    // 删除
    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    public RetModel del(
    @PathVariable("id")
                Long id
    ) {
        service.deleteById(id);
        return RetModel.get();
     }


    // 列表
    @RequestMapping(value = "", method = RequestMethod.GET)
    public RetModel page(
    @RequestParam(defaultValue = "1")
            Integer pageIndex,
    @RequestParam(defaultValue = "10")
            Integer pageSize,
            String keyword, // 关键字
            Integer targetSourceType  , //   捐款目标 0 公益，1队伍，2个人
            Long targetId  , //   目标ID
            String targetName  , //   目标名称
            String targetHeadImg  , //   目标头像
            Long fromSourceUserId  , //   捐款来源用户ID
            Long userId  , //   用户ID
            String userRealname  , //   真实姓名
            String userWxNickname  , //   用户昵称
            String userWxHeadImg  , //   用户头像
            String realname  , //   留言昵称
            String leaveMessage  , //   留言
            Integer money  , //   捐款金额
            BigDecimal moneyFloat  , //   捐款金额
            Integer needInvoice  , //   需要发票
            String invoiceTitle  , //   发票抬头
            String invoiceAddress  , //   发票地址
            String invoiceContactName  , //   发票联系人
            String invoiceContactPhone  , //   发票联系电话
            Integer payStatus  , //   状态
            String returnCode  , //   返回状态码
            String returnMsg  , //   返回信息	
            String appid  , //   公众账号ID	
            String mchId  , //   商户号	
            String deviceInfo  , //   设备号	
            String nonceStr  , //   随机字符串	
            String sign  , //   签名
            String signType  , //   签名类型	
            String resultCode  , //   业务结果	
            String errCode  , //   错误代码	
            String errCodeDes  , //   错误代码描述	
            String openid  , //   用户标识	
            String isSubscribe  , //   是否关注公众账号	
            String tradeType  , //   交易类型	
            String bankType  , //   付款银行	
            Integer totalFee  , //   订单金额	
            Integer settlementTotalFee  , //   应结订单金额	
            String feeType  , //   货币种类	
            Integer cashFee  , //   现金支付金额	
            String cashFeeType  , //   现金支付货币类型	
            Integer couponFee  , //   总代金券金额		
            String transactionId  , //   微信支付订单号		
            String outTradeNo  , //   商户订单号		
            String attach  , //   商家数据包		
            String timeEnd  , //   支付完成时间	
            String payNote   //   支付备注
    ) {
        DonationRecordDto dto = new DonationRecordDto(pageIndex,pageSize);
        PageResult<DonationRecordModel> page = service.page(dto);
        return RetModel.get().setData(page);
    }

    // 单个
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public RetModel get(
    @PathVariable("id")
    Long id ) {
        DonationRecordModel model = service.getById(id);
        return RetModel.get().setData(model);
    }

}
